package leecode

func characterReplacement(s string, k int) (result int) {
	//窗口中不同字母的个数超过k时, 窗口左边界右移
	hashMap := make(map[byte]int) //key为字符 value为字符出现的次数
	left := 0
	maxFrequency := 0 // 记录窗口中出现最多次数的字符的次数
	for right := 0; right < len(s); right++ {
		hashMap[s[right]]++
		maxFrequency = max(maxFrequency, hashMap[s[right]])
		//判断窗口大小是否能够容纳替换K个字符
		if right-left+1-maxFrequency > k {
			hashMap[s[left]]--
			left++
		}
		result = max(result, right-left+1)
	}
	return
}
